/**
 * 智慧粮仓系统全局配置文件
 * 集中管理所有模块的配置参数
 */

// 数据刷新间隔配置（毫秒）
const CONFIG = {
    // 数据更新间隔
    UPDATE_INTERVALS: {
        DEFAULT: 5000,            // 默认更新间隔：5秒
        GRAIN_SITUATION: 5000,    // 粮情检测更新间隔：1秒
        ENERGY_MONITORING: 5000, // 能耗监测更新间隔：30秒
        GAS_MONITORING: 5000,     // 气体检测更新间隔：3秒
        VENTILATION: 5000,        // 通风控制更新间隔：2秒
        OTHER: 5000               // 其他模块更新间隔：5秒
    },

    // API请求配置
    API: {
        TIMEOUT: 10000,           // API请求超时时间：10秒
        RETRY_COUNT: 3,           // 请求失败重试次数
        RETRY_DELAY: 1000         // 重试延迟时间：1秒
    },

    // UI配置
    UI: {
        ANIMATION_DURATION: 300,  // 动画持续时间：300毫秒
        TOAST_DURATION: 3000,     // 提示消息显示时间：3秒
        ERROR_DURATION: 5000      // 错误消息显示时间：5秒
    },

    // 调试配置
    DEBUG: {
        ENABLED: true,            // 是否启用调试模式
        LOG_LEVEL: 'info'         // 日志级别：debug, info, warn, error
    }
};

/**
 * 获取指定模块的更新间隔
 * @param {string} module 模块名称
 * @returns {number} 更新间隔（毫秒）
 */
function getUpdateInterval(module) {
    const intervals = CONFIG.UPDATE_INTERVALS;
    return intervals[module] || intervals.DEFAULT;
}

/**
 * 获取API配置
 * @returns {Object} API配置对象
 */
function getApiConfig() {
    return CONFIG.API;
}

/**
 * 获取UI配置
 * @returns {Object} UI配置对象
 */
function getUiConfig() {
    return CONFIG.UI;
}

/**
 * 获取调试配置
 * @returns {Object} 调试配置对象
 */
function getDebugConfig() {
    return CONFIG.DEBUG;
}

// 配置页面脚本
document.addEventListener('DOMContentLoaded', function () {
    console.log('Config page loaded');

    // 首先移除所有可能的旧事件监听器
    removeOldEventListeners();

    // 初始化数据
    initConfigData();

    // 绑定标签切换事件
    setupTabSwitching();

    // 绑定数据项点击事件
    setupDataItemClickEvents();
});

// 移除所有可能的旧事件监听器
function removeOldEventListeners() {
    const tabItems = document.querySelectorAll('.tab-item');
    tabItems.forEach(item => {
        // 克隆并替换元素，有效移除所有事件监听器
        const newItem = item.cloneNode(true);
        item.parentNode.replaceChild(newItem, item);
    });
}

// 设置标签切换
function setupTabSwitching() {
    const tabItems = document.querySelectorAll('.tab-item');

    tabItems.forEach(tab => {
        tab.addEventListener('click', function (event) {
            event.preventDefault();
            const tabId = this.getAttribute('data-tab');

            console.log('Tab clicked:', tabId);

            // 更新活动标签样式
            document.querySelectorAll('.tab-item').forEach(t => {
                t.classList.remove('active');
            });
            this.classList.add('active');

            // 显示对应内容
            document.querySelectorAll('.tab-content').forEach(content => {
                content.classList.remove('active');
            });
            
            // 添加安全检查，确保元素存在
            const tabContent = document.querySelector(`.${tabId}-content`);
            if (tabContent) {
                tabContent.classList.add('active');
            } else {
                console.warn(`Tab content with class '${tabId}-content' not found`);
            }
        });
    });
}

// 设置数据项点击事件
function setupDataItemClickEvents() {
    document.addEventListener('click', function (event) {
        // 查找被点击的数据项
        let targetElement = event.target;
        while (targetElement != null && !targetElement.classList.contains('data-item')) {
            targetElement = targetElement.parentElement;
        }

        // 如果找到了数据项
        if (targetElement && targetElement.classList.contains('data-item')) {
            const label = targetElement.querySelector('.item-label').textContent;
            const value = targetElement.querySelector('.value-text').textContent;
            const unit = targetElement.querySelector('.value-unit').textContent;

            showEditDialog(label, value, unit, (newValue) => {
                // 更新显示的值
                targetElement.querySelector('.value-text').textContent = newValue;

                // 显示保存成功提示
                window.showToast(`${label}已更新为${newValue}${unit}`, 'success');

                // 这里可以添加保存到后端的代码
                console.log(`设置参数: ${label} = ${newValue}${unit}`);
            });
        }
    });
}

// 初始化配置数据
function initConfigData() {
    // 这里可以从后端获取数据，目前使用静态数据

    // 通风参数
    const ventilationData = [
        { label: "通风口开关超时设置：", value: "5", unit: "S" },
        { label: "电动蝶阀开关超时设置：", value: "5", unit: "S" },
        { label: "轴流窗开关超时设置：", value: "5", unit: "S" },
        { label: "自然窗开关超时设置：", value: "5", unit: "S" },
        { label: "环流风机开启温度设置：", value: "25", unit: "℃" },
        { label: "环流风机停止温度设置：", value: "20", unit: "℃" },
        { label: "自然窗开关温度设置：", value: "28", unit: "℃" },
        { label: "自然窗停止温度设置：", value: "24", unit: "℃" }
    ];

    // 空调参数
    const airconditionData = [
        { label: "1#空调目标温度设置：", value: "24", unit: "℃" },
        { label: "2#空调目标温度设置：", value: "24", unit: "℃" },
        { label: "3#空调目标温度设置：", value: "24", unit: "℃" },
        { label: "4#空调目标温度设置：", value: "24", unit: "℃" }
    ];

    // 更新通风数据显示
    updateDataDisplay('.ventilation-content .data-list', ventilationData);

    // 更新空调数据显示
    updateDataDisplay('.aircondition-content .data-list', airconditionData);
}

// 更新数据显示
function updateDataDisplay(selector, dataArray) {
    const container = document.querySelector(selector);
    if(!container){
        return;
    }

    // 清空现有数据
    container.innerHTML = '';

    // 添加新数据
    dataArray.forEach(item => {
        const dataItem = document.createElement('div');
        dataItem.className = 'data-item';
        dataItem.innerHTML = `
            <div class="item-label">${item.label}</div>
            <div class="item-value">
                <span class="value-text">${item.value}</span>
                <span class="value-unit">${item.unit}</span>
            </div>
        `;

        container.appendChild(dataItem);
    });
}

// 显示编辑对话框
function showEditDialog(label, currentValue, unit, callback) {
    // 创建对话框元素
    const dialogHtml = `
        <div class="edit-dialog">
            <div class="dialog-header">
                <span>${label}</span>
                <span class="close-btn">&times;</span>
            </div>
            <div class="dialog-body">
                <div class="input-group">
                    <input type="number" class="value-input" value="${currentValue}" min="0" step="1">
                    <span class="input-unit">${unit}</span>
                </div>
            </div>
            <div class="dialog-footer">
                <button class="cancel-btn">取消</button>
                <button class="save-btn">保存</button>
            </div>
        </div>
        <div class="dialog-overlay"></div>
    `;

    // 添加到页面
    document.body.insertAdjacentHTML('beforeend', dialogHtml);

    const dialogOverlay = document.querySelector('.dialog-overlay');
    const editDialog = document.querySelector('.edit-dialog');
    const closeBtn = document.querySelector('.close-btn');
    const cancelBtn = document.querySelector('.cancel-btn');
    const saveBtn = document.querySelector('.save-btn');
    const valueInput = document.querySelector('.value-input');

    // 添加动画效果
    setTimeout(() => {
        dialogOverlay.classList.add('active');
        editDialog.classList.add('active');
        
        // 自动聚焦到输入框并全选内容
        valueInput.focus();
        valueInput.select();
    }, 10);

    // 关闭对话框的函数
    function closeDialog() {
        // 添加关闭动画
        dialogOverlay.classList.remove('active');
        editDialog.classList.remove('active');

        // 等待动画完成后移除元素
        setTimeout(() => {
            dialogOverlay.remove();
            editDialog.remove();
        }, 300);
    }

    // 保存值的函数
    function saveValue() {
        const newValue = valueInput.value.trim();
        
        // 简单验证
        if (newValue === '') {
            // 显示错误提示
            valueInput.classList.add('error');
            window.showToast('请输入有效的值', 'error');
            setTimeout(() => valueInput.classList.remove('error'), 2000);
            return;
        }
        
        // 对于特定单位的输入进行范围验证
        if (unit === 'S' && (parseInt(newValue) < 1 || parseInt(newValue) > 60)) {
            window.showToast('超时设置范围应在1-60秒之间', 'warning');
            return;
        } else if (unit === '℃' && (parseInt(newValue) < 0 || parseInt(newValue) > 50)) {
            window.showToast('温度设置范围应在0-50℃之间', 'warning');
            return;
        }
        
        // 关闭对话框
        closeDialog();
        
        // 执行回调
        if (typeof callback === 'function') {
            callback(newValue);
        }
    }

    // 绑定事件
    closeBtn.addEventListener('click', closeDialog);
    cancelBtn.addEventListener('click', closeDialog);
    saveBtn.addEventListener('click', saveValue);
    
    // 按Enter键保存
    valueInput.addEventListener('keydown', function(e) {
        if (e.key === 'Enter') {
            saveValue();
        }
    });
    
    // 点击遮罩层关闭
    dialogOverlay.addEventListener('click', function(e) {
        if (e.target === dialogOverlay) {
            closeDialog();
        }
    });
    
    // 按ESC键关闭
    document.addEventListener('keydown', function(e) {
        if (e.key === 'Escape') {
            closeDialog();
        }
    });
} 